package com.wenli.graduate2022.wenliGreenShop.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;

import java.io.Serializable;

/**
 * 解释一下我为什么要使用@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler" })注解，在controller使用@Responsebody
 * 向客户端传json值时，springboot里面会默认使用fasterxml.Jackson序列化为json格式，如果被序列化的类太复杂或里面有对象类型为null，就会报：
 * disable SerializationFeature.FAIL_ON_EMPTY_BEANS的错误与异常，告诉你有属性为空，这可能是因为我们用了lombok的原因。但这种类型的异常一般
 * 用@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler" })注解都可以解决。
 *      关于json序列化问题有三个注解可供我们使用：
 *      @JsonIgnore注解用来忽略某些字段，可以用在变量或者Getter方法上，用在Setter方法时，和变量效果一样。这个注解一般用在我们要忽略的字段上。
 *      @JsonIgnoreProperties(ignoreUnknown = true)，将这个注解写在类上之后，就会忽略类中不存在的字段。这个注解还可以指定要忽略的字段，
 * 例如@JsonIgnoreProperties({ “password”, “secretKey” })
 *      @JsonFormat可以帮我们完成格式转换。例如对于Date类型字段，如果不适用JsonFormat默认在rest返回的是long，
 * 如果我们使用@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)，就返回"2018-11-16 22:58:15"
 *
 * @author HuangHai
 * @date 2021/9/26 16:52
 */
@Data   //这是lombok插件给我们提供的一个注解，将其写在类上并导入lombok的依赖，@Data注解就可以自动为我们生成set,get,toString,hashCode,equals，canEqual以及一个空参构造器等方法
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler" }) //在实体类上用该注解，忽略因有属性为null而带来的json序列化报错问题
public class Address implements Serializable {
    private String addressAreaId;
    private String addressName;
    private Address addressRegionId;
}
